import { defineStore } from 'pinia';

/**
 * 使用方法
 *
 * 先引入import { userLifeDataStore } from '@/store/lifeDataStore.js';
 * 后声明 const lifeDataStore = userLifeDataStore();
 * @param userInfo 用户信息
 * @function setUserInfo 保存用户信息
 * @function loadFromLocalStorage 加载本地缓存
 * @function saveToLocalStorage 缓存到本地
 *
 **/

export const userLifeDataStore = defineStore('lifeData', {
	state: (): any => ({
		userInfo: {},
		isLogin: false,
		config: {}
	}),
	actions: {
		setConfig(config: any) {
			this.config = config;
			this.saveToLocalStorage(); // 调用保存方法
		},
		setIsLogin(isLogin: any) {
			this.isLogin = isLogin;
			this.saveToLocalStorage(); // 调用保存方法
		},
		setUserInfo(userInfo: any) {
			this.userInfo = userInfo;
			this.saveToLocalStorage(); // 调用保存方法
		},
		loadFromLocalStorage() {
			const storedState = uni.getStorageSync('lifeDataStore');
			if (storedState) {
				this.$state = JSON.parse(storedState); // 使用 $state 来直接设置整个状态对象
			}
		},
		saveToLocalStorage() {
			uni.setStorageSync('lifeDataStore', JSON.stringify(this.$state)); // 保存整个状态对象
		}
	}
});
